#ifndef _SM3_H_INCLUDED
#define _SM3_H_INCLUDED

#include<cstdint>

namespace SM3 {
class SM3 {
	public:
		SM3();
		void init();
		void hash(void *msg, uint64_t len);
	private:
		uint32_t A,B,C,D,E,F,G,H;
		void CF(uint32_t W[64], uint32_t W_[64]);
		void IT(const uint8_t msg[64], uint64_t len);
};
}

#endif
